package com.ibangnuo.api.commission;

import com.ibangnuo.framework.domain.CommissionMonth;
import com.ibangnuo.framework.domain.request.commission.CommissionCommercialDayRequest;
import com.ibangnuo.framework.domain.request.commission.CommissionRequest;
import com.ibangnuo.framework.model.response.ObjectResult;
import com.ibangnuo.framework.model.response.QueryResponseResult;
import com.ibangnuo.framework.model.response.ResponseResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

import java.util.Map;

/**
 * @Author: wwy
 * @Date: 2020-03-12 17:50
 */
@Api(value="佣金接口",description = "佣金接口管理，增删改查")
public interface CommissionControllerApi {

    @ApiOperation("下级代理月佣金分页查询")
    QueryResponseResult findList(int page, int size, CommissionRequest commissionRequest);

    @ApiOperation("当前登录人日佣金分页查询")
    QueryResponseResult findDayList(int page, int size, CommissionRequest commissionRequest);

    @ApiOperation("当前登录人日佣金直属商户日佣金统计")
    ObjectResult countTimeScope(Map<String,Object> map);

    @ApiOperation("当前登录人下级代理日佣金商户佣金统计，包含自己的直属商户")
    QueryResponseResult findByTimeAndAgentId(CommissionCommercialDayRequest commissionCommercialDayRequest);
    @ApiOperation("根据时间查询当前登录人其下的代理商的商户佣金统计")
    QueryResponseResult findByTimeAndParentAgentId(CommissionRequest commissionRequest);
    @ApiOperation("当前登录人月佣金分页查询")
    QueryResponseResult findMouthList(CommissionRequest commissionRequest);
    @ApiOperation("当前登录人日佣金直属商户月佣金统计")
    ObjectResult countTimeScopeMonth(Map<String,Object> parmMap);

    @ApiOperation("当前登录人下级代理日佣金商户佣金统计，包含自己的直属商户")
    QueryResponseResult findByTimeAndParentAgentIdMonth(CommissionRequest commissionRequest);

    @ApiOperation("当前登录人下级代理月佣金商户佣金统计，包含自己的直属商户")
    QueryResponseResult findByTimeAndAgentIdMonth(CommissionCommercialDayRequest commissionCommercialDayRequest);

    @ApiOperation("根据代理商id和时间查询月佣金")
    QueryResponseResult findByAgentIdAndTimeMonth(CommissionRequest commissionRequest);

    @ApiOperation("根据代理商id和时间查询日佣金")
    QueryResponseResult findByAgentIdAndTimeDay(CommissionRequest commissionRequest);

    @ApiOperation("根据id查询月佣金")
    @ApiImplicitParams({
            @ApiImplicitParam(name="id",value = "主键",required=true,paramType="path",dataType="string"),
    })
    ObjectResult findMonthById(String id);

    @ApiOperation("根据id修改月佣金")
    @ApiImplicitParams({
            @ApiImplicitParam(name="id",value = "主键",required=true,paramType="path",dataType="string"),
    })
    ResponseResult updateMonthById(String id, CommissionMonth commissionMonth);

    @ApiOperation("下级代理月佣金分页查询不包含3状态")
    QueryResponseResult findListNotStatus(int page, int size, CommissionRequest commissionRequest);
}
